home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / jptui36b.zip / DEMO / SRC / JPDEMO.CPP next >
C/C++ Source or Header  |  1996-11-14  |  16KB  |  637 lines

  1. #include <dos.h>
  2. #include <iostream.h>
  3. #include <stdlib.h>
  4.  
  5. #include "..\..\lib\debug\jptui.h"
  6. //#include "jptui.h"
  7.  
  8. #define VERSION     3
  9. #define SUB_VERSION 6
  10.  
  11.  
  12. #define VOC_LANGUAGE 1000
  13. #define VOC_HELLO    1001
  14.  
  15. //-- APPLICATION ------------------------------------------------------------
  16.  
  17. TApplication  JPTuiDemo(ENGLISH);
  18.  
  19. //-- MAIN WINDOW ------------------------------------------------------------
  20.  
  21. TWindow       MainWindow          (DIALOG1,
  22.                    2,2,77,22,
  23.                    "JPTUI Demo",
  24.                    INFO_BAR,
  25.                    NOT_MODAL);
  26.  
  27. TPushButton   QuitButton          (&MainWindow,
  28.                    33,19,10,
  29.                    "~Quit",
  30.                    PB_CANCEL);
  31.  
  32. //-- MENUS ------------------------------------------------------------------
  33.  
  34. TMenuBar      MenuBar             (&MainWindow);
  35.  
  36. TMenuItem     MenuItemsMenuItems[]=
  37.  
  38.                   { {"~Unchecked item",
  39.                      LI_TOGGLE,
  40.                      SC_CTRL_F1,
  41.                      "Help about 'Unchecked item' : it's a toggle"},
  42.  
  43.                     {"~Checked item",
  44.                      LI_CHECKED,
  45.                      SC_ALT_F1,
  46.                      "Help about 'Checked item' : it's not a toggle"},
  47.  
  48.                     {SEPARATOR,
  49.                      LI_NOATTR,
  50.                      SC_NONE,
  51.                      ""},
  52.  
  53.                     {"Disabled ~item",
  54.                      LI_TOGGLE|LI_CHECKED|LI_DISABLED,
  55.                      SC_SHIFT_F1,
  56.                      "Help about 'Disabled item'"},
  57.  
  58.                     {NULL,
  59.                      LI_NOATTR,
  60.                      SC_NONE,
  61.                      ""} };
  62.  
  63. TMenu          MenuItemsMenu       (&MenuBar,
  64.                    "~Menu_items",
  65.                    MenuItemsMenuItems);
  66.  
  67.  
  68. TMenuItem     DialogBoxesMenuItems[]=
  69.  
  70.                   { {"~Message Box",
  71.                      LI_NOATTR,
  72.                      SC_CTRL_BACKSPACE,
  73.                      "This menu item opens two message boxes"},
  74.  
  75.                     {"~Input Box",
  76.                      LI_NOATTR,
  77.                      SC_CTRL_HOME,
  78.                      "This menu item opens an input box"},
  79.  
  80.                     {SEPARATOR,
  81.                      LI_NOATTR,
  82.                      SC_NONE,
  83.                      ""},
  84.  
  85.                     {"~File Selection Box",
  86.                      LI_NOATTR,
  87.                      SC_F3,
  88.                      "This menu item opens a file selection box"},
  89.  
  90.                     {NULL,
  91.                      LI_NOATTR,
  92.                      SC_NONE,
  93.                      ""} };
  94.  
  95. TMenu          DialogBoxesMenu      (&MenuBar,
  96.                    "Dialo~g",
  97.                    DialogBoxesMenuItems);
  98.  
  99.  
  100. TMenuItem     OptionMenuItems[]=
  101.                   { {"~Graphical pointer",
  102.                      LI_TOGGLE|LI_CHECKED,
  103.                      SC_CTRL_G,
  104.                      "Select this item to choose the graphical mouse pointer"},
  105.  
  106.                     {SEPARATOR,
  107.                      LI_NOATTR,
  108.                      SC_NONE,
  109.                      ""},
  110.  
  111.                     {"Text mode 80x25, 8 pixels per character",
  112.                      LI_NOATTR,
  113.                      SC_ALT_1,
  114.                      "Sets the text mode to 80x25 with a 8-pixel-wide font"},
  115.  
  116.                     {"Text mode 80x25, 9 pixels per character",
  117.                      LI_NOATTR|LI_CHECKED,
  118.                      SC_ALT_2,
  119.                      "Sets the text mode to 80x25 with a 9-pixel-wide font"},
  120.  
  121.                     {"Text mode 80x28, 8 pixels per character",
  122.                      LI_NOATTR,
  123.                      SC_ALT_3,
  124.                      "Sets the text mode to 80x28 with a 8-pixel-wide font"},
  125.  
  126.                     {"Text mode 80x28, 8 pixels per character",
  127.                      LI_NOATTR,
  128.                      SC_ALT_4,
  129.                      "Sets the text mode to 80x28 with a 9-pixel-wide font"},
  130.  
  131.                     {"Text mode 80x50, 8 pixels per character",
  132.                      LI_NOATTR,
  133.                      SC_ALT_5,
  134.                      "Sets the text mode to 80x50 with a 8-pixel-wide font"},
  135.  
  136.                     {"Text mode 80x50, 9 pixels per character",
  137.                      LI_NOATTR,
  138.                      SC_ALT_6,
  139.                      "Sets the text mode to 80x50 with a 9-pixel-wide font"},
  140.  
  141.                     {"Text mode 132x25 (Cirrus Logic only)" ,
  142.                      LI_NOATTR,
  143.                      SC_ALT_7,
  144.                      "Sets the text mode to 132x25 (use only with a Cirrus Logic card)"},
  145.  
  146.                     {"Text mode 132x43 (Cirrus Logic only)" ,
  147.                      LI_NOATTR,
  148.                      SC_ALT_8,
  149.                      "Sets the text mode to 132x43 (use only with a Cirrus Logic card)"},
  150.  
  151.                     {SEPARATOR,
  152.                      LI_NOATTR,
  153.                      SC_NONE,
  154.                      ""},
  155.  
  156.                     {"Shows available memory",
  157.                      LI_TOGGLE,
  158.                      SC_NONE,
  159.                      "Select this item to display free memory (only possible in debug version)"},
  160.  
  161.                     {NULL,
  162.                      LI_NOATTR,
  163.                      SC_NONE,
  164.                      ""}  };
  165.  
  166. TMenu         OptionMenu          (&MenuBar,
  167.                    "~Options",
  168.                    OptionMenuItems);
  169.  
  170.  
  171. TMenuItem     LanguageMenuItems[]={ {"Multi-~language support",
  172.                      LI_NOATTR,
  173.                      SC_CTRL_L,
  174.                      "This menu item starts a demonstration of multi-language support"},
  175.  
  176.                     {NULL,
  177.                      LI_NOATTR,
  178.                      SC_NONE,
  179.                      ""}  };
  180.  
  181. TMenu         LanguageMenu        (&MenuBar,
  182.                    "La~nguage",
  183.                    LanguageMenuItems);
  184.  
  185. TMenuItem     HelpMenuItems[]=
  186.                   { {"~Help",
  187.                      LI_NOATTR,
  188.                      SC_F1,
  189.                      "This menu item opens two modeless help windows"},
  190.  
  191.                     {NULL,
  192.                      LI_NOATTR,
  193.                      SC_NONE,
  194.                      ""}  };
  195.  
  196. TMenu         HelpMenu              (&MenuBar,
  197.                    "~Help",
  198.                    HelpMenuItems);
  199.  
  200. //-- TAB GROUP --------------------------------------------------------------
  201.  
  202. TTabGroup     TabGroup            (&MainWindow,
  203.                    2,3,72,15,DIALOG2);
  204. //-- BUTTONS ----------------------------------------------------------------
  205.  
  206. TTab          ButtonTab              (&TabGroup,
  207.                    "B~uttons");
  208.  
  209. TLabel        PushButtonLabel     (&ButtonTab,
  210.                    4,3,
  211.                    "Push Button                              :");
  212.  
  213. TPushButton   PushButton          (&ButtonTab,
  214.                    50,3,17,
  215.                    "Push Button ~w");
  216.  
  217. TLabel        CancelPushButtonLabel
  218.                   (&ButtonTab,
  219.                    4,5,
  220.                    "Cancel Push Button (pushed by <esc>)     :  Try Quit button below");
  221.  
  222. TLabel        DefaultPushButtonLabel
  223.                   (&ButtonTab,
  224.                    4,7,
  225.                    "Default Push Button (pushed by <return>  :\nwhen no other button has the focus)");
  226.  
  227. TPushButton   DefaultPushButton   (&ButtonTab,
  228.                    50,7,17,
  229.                    "Push Button ~y",
  230.                    PB_DEFAULT);
  231.  
  232. TLabel        DisabledPushButtonLabel
  233.                   (&ButtonTab,
  234.                    4,10,
  235.                    "Disabled Push Button                     :");
  236.  
  237. TPushButton   DisabledPushButton  (&ButtonTab,
  238.                    50,10,17,
  239.                    "Push Button ~z",
  240.                    PB_NORMAL,
  241.                    DISABLED);
  242.  
  243.  
  244. //-- CHECK BOXES ------------------------------------------------------------
  245.  
  246. TTab          CheckBoxTab      (&TabGroup,
  247.                    "C~heck Boxes");
  248.  
  249. TCheckBox     CheckBox1          (&CheckBoxTab,
  250.                    8,4,20,
  251.                    "Check Box ~1");
  252.  
  253. TCheckBox     CheckBox2          (&CheckBoxTab,
  254.                    8,5,20,
  255.                    "Check Box ~2",
  256.                    CHECKED);
  257.  
  258. TCheckBox     CheckBox3          (&CheckBoxTab,
  259.                    8,7,20,
  260.                    "Check Box ~3",
  261.                    NOT_CHECKED,
  262.                    DISABLED);
  263.  
  264. TRadioGroup   RadioGroup          (&CheckBoxTab,
  265.                    42,2,20,8,"~Radio Buttons");
  266.  
  267. TRadioButton  RadioButton1      (&RadioGroup,
  268.                    1,2,17,
  269.                    "Radio Button ~x");
  270.  
  271. TRadioButton  RadioButton2      (&RadioGroup,
  272.                    1,3,17,
  273.                    "Radio Button ~y",
  274.                    CHECKED);
  275.  
  276.  
  277. TRadioButton  RadioButton3      (&RadioGroup,
  278.                    1,5,17,
  279.                    "Radio Button ~z",
  280.                    NOT_CHECKED,
  281.                    DISABLED);
  282.  
  283. //-- EDIT ZONES -------------------------------------------------------------
  284.  
  285. TTab          EditZoneTab      (&TabGroup,
  286.                    "~Edit Zones");
  287.  
  288. TEditZone     EditZone           (&EditZoneTab,
  289.                    42,1,
  290.                    -40,0,
  291.                    "Edit ~Zone (enter any string) :",
  292.                    25,255,
  293.                    "Enter a long string");
  294.  
  295. TEditZone     DisabledEditZone    (&EditZoneTab,
  296.                    42,2,
  297.                    -40,0,
  298.                    "Di~sabled Edit Zone           :",
  299.                    25,255,
  300.                    "You can't enter anything",
  301.                    DISABLED);
  302.  
  303. TIntegerEditZone
  304.           IntegerEditZone
  305.                   (&EditZoneTab,
  306.                    52,4,
  307.                    -50,0,
  308.                    "~Integer Edit Zone (enter any integer value) :",
  309.                    15,255,
  310.                    0,10);
  311.  
  312. TDecimalEditZone
  313.           DecimalEditZone
  314.                   (&EditZoneTab,
  315.                    52,5,
  316.                    -50,0,
  317.                    "~Decimal Edit Zone (enter any decimal value) :",
  318.                    15,255,
  319.                    -3.2,10.5);
  320.  
  321.  
  322. TTextZone     TextZone            (&EditZoneTab,
  323.                    2,7,
  324.                    68,6,
  325.                    "~Text Zone",
  326.                    255);
  327.  
  328. //-- LISTS ------------------------------------------------------------------
  329.  
  330. TTab          ListTab              (&TabGroup,
  331.                    "~Lists");
  332.  
  333. TListItem     ListBoxItems[]=     {{"Item 1",LI_NOATTR},
  334.                    {"Item 2",LI_NOATTR},
  335.                    {"Item 3",LI_DISABLED},
  336.                    {SEPARATOR,LI_NOATTR},
  337.                    {"Items",LI_NOATTR},
  338.                    {"are not",LI_NOATTR},
  339.                    {"automatically",LI_NOATTR},
  340.                    {"sorted",LI_NOATTR},
  341.                    {NULL,LI_NOATTR}};
  342.  
  343. TListBox      ListBox             (&ListTab,
  344.                   2,2,
  345.                   20,10,
  346.                   "List Bo~x",
  347.                   ListBoxItems);
  348.  
  349.  
  350. TListItem     SortedListBoxItems[]=
  351.                   {{"Item 1",LI_NOATTR},
  352.                    {"Item 2",LI_NOATTR},
  353.                    {"Item 3",LI_DISABLED},
  354.                    {SEPARATOR,LI_NOATTR},
  355.                    {"Items"},
  356.                    {"are",LI_NOATTR},
  357.                    {"automatically",LI_NOATTR},
  358.                    {"sorted",LI_NOATTR},
  359.                    {NULL,LI_NOATTR}};
  360.  
  361.  
  362. TListBox      SortedListBox       (&ListTab,
  363.                   24,2,
  364.                   20,10,
  365.                   "~Sorted List Box",
  366.                   SortedListBoxItems,
  367.                   SORTED);
  368.  
  369. TListItem     CheckListBoxItems[]={{"Any item can be"  ,LI_NOATTR},
  370.                    {"checked and can"  ,LI_CHECKED},
  371.                    {"be a toggle or "  ,LI_TOGGLE},
  372.                    {"not"              ,LI_CHECKED},
  373.                    {SEPARATOR          ,LI_NOATTR},
  374.                    {"It's a toggle"    ,LI_TOGGLE|LI_CHECKED},
  375.                    {"It's not a toggle",LI_NOATTR},
  376.                    {SEPARATOR          ,LI_NOATTR},
  377.                    {"Items can be"     ,LI_TOGGLE},
  378.                    {"toggled by double",LI_TOGGLE},
  379.                    {"clicking or by"   ,LI_TOGGLE},
  380.                    {"pressing <SPACE>" ,LI_TOGGLE},
  381.                    {NULL,LI_NOATTR}};
  382.  
  383. TListBox      CheckListBox       (&ListTab,
  384.                   46,2,
  385.                   23,10,
  386.                   "~Check List Box",
  387.                   CheckListBoxItems);
  388.  
  389. //-- MISC IN MAIN WINDOW-----------------------------------------------------
  390.  
  391. TTab          MiscTab              (&TabGroup,
  392.                   "Mi~sc");
  393.  
  394. TFrame        Frame1              (&MiscTab,
  395.                   2,2,
  396.                   40,11,
  397.                   "This is a ~Frame");
  398.  
  399. TPushButton   GaugeStartButton    (&Frame1,
  400.                   13,2,12,
  401.                   "~Push here");
  402.  
  403. TFrame        Frame2              (&Frame1,
  404.                   2,4,
  405.                   36,6,
  406.                   "This is ~another Frame");
  407.  
  408. TGauge        Gauge               (&Frame2,
  409.                   2,2,32,
  410.                   "Gauge : work in progress");
  411.  
  412.  
  413. TLabel        ComboBoxLabel       (&MiscTab,
  414.                                    45,3,
  415.                                    "Combo-Boxes :");
  416.  
  417. TComboBox     ComboBox1           (&MiscTab,
  418.                    45,6,
  419.                    0,-1,
  420.                    "F~ree string",
  421.                    15,20,
  422.                    "Free String",
  423.                    6,
  424.                    ListBoxItems,
  425.                    STRING_NEEDNT_TO_BE_IN_LIST,
  426.                    NOT_SORTED,
  427.                    ENABLED);
  428.  
  429. TComboBox     ComboBox2           (&MiscTab,
  430.                    45,9,
  431.                    0,-1,
  432.                    "S~tring in list",
  433.                    15,20,
  434.                    "Free String",
  435.                    6,
  436.                    SortedListBoxItems,
  437.                    STRING_MUST_BE_IN_LIST,
  438.                    SORTED,
  439.                    ENABLED);
  440.  
  441. //-- HELP WINDOWS ------------------------------------------------------------
  442.  
  443. TWindow       Help1Window          (HELP,
  444.                   20,13,36,10,
  445.                   "Help 1 : Modeless/movable window",
  446.                   NO_INFO_BAR,
  447.                   NOT_MODAL,
  448.                   MOVABLE);
  449.  
  450.  
  451. TWindow       Help2Window         (ALERT,
  452.                   45,15,36,10,
  453.                   "Help 2 : Modeless/unmovable window",
  454.                   NO_INFO_BAR,
  455.                   NOT_MODAL,
  456.                   NOT_MOVABLE);
  457.  
  458. TLabel        Help1WindowLabel     (&Help1Window,
  459.                    2,2,
  460.                    "You can switch from a\n"\
  461.                    "modeless window to\n"   \
  462.                    "another one by clicking\n"   \
  463.                    "on another window  \n"   \
  464.                    "or by pressing\n"\
  465.                    "ALT-F6");
  466.  
  467. TLabel        Help2WindowLabel     (&Help2Window,
  468.                    2,2,
  469.                    "No help available");
  470.  
  471. void DialogMenuItemClickedCall(PObject /*sender*/,int item_nb,char */*arg*/)
  472. {
  473.   char str[30];
  474.  
  475.   switch (item_nb)
  476.     {
  477.       case 1 : MessageBox("Message Box ","This is a message box",ALERT,MB_ICONSTOP);
  478.            MessageBox("","This is another message box",HELP,MB_ICONINFORMATION|MB_ABORTRETRYIGNORE);
  479.            break;
  480.       case 2 : InputBox("Input Box","Please enter what you want\n"\
  481.                     "(ALT-BACKSPACE to return to\n"\
  482.                     "default value) :",DIALOG1,
  483.             "Default Value",30,str);
  484.            break;
  485.       case 4 : MessageBox("You have chosen : ",
  486.               FileSelectionBox("Load","*.*"),
  487.               DIALOG1);
  488.     }
  489.  
  490. }
  491.  
  492. void SetCirrusLogicMode132x25()
  493. {
  494.   union REGS regs;
  495.  
  496.   regs.x.ax=0x14;
  497.   int86(0x10, ®s, ®s);
  498. }
  499.  
  500. void SetCirrusLogicMode132x43()
  501. {
  502.   union REGS regs;
  503.  
  504.   regs.x.ax=0x54;
  505.   int86(0x10, ®s, ®s);
  506. }
  507.  
  508. void OptionMenuItemClickedCall(PObject /*sender*/,int item_nb,char */*arg*/)
  509. {
  510.   static int old_selected_mode=4;
  511.  
  512.   switch (item_nb)
  513.     {
  514.       case 1 : GraphicalMousePointer(OptionMenu.m_item_is_checked(item_nb));
  515.            break;
  516.  
  517.       case 3 : SetTextMode(TEXTMODE_80x25_8);            break;
  518.       case 4 : SetTextMode(TEXTMODE_80x25_9);             break;
  519.       case 5 : SetTextMode(TEXTMODE_80x28_8);            break;
  520.       case 6 : SetTextMode(TEXTMODE_80x28_9);            break;
  521.       case 7 : SetTextMode(TEXTMODE_80x50_8);            break;
  522.       case 8 : SetTextMode(TEXTMODE_80x50_9);            break;
  523.       case 9 : SetUserTextMode(SetCirrusLogicMode132x25); break;
  524.       case 10: SetUserTextMode(SetCirrusLogicMode132x43); break;
  525.  
  526.       case 12: if (OptionMenu.m_item_is_checked(item_nb))
  527.          DEBUG_SHOW_MEMORY();
  528.            else
  529.          DEBUG_HIDE_MEMORY();
  530.            break;
  531.  
  532.     }
  533.  
  534.   if ((item_nb>=3) && (item_nb<=10))
  535.     {
  536.       OptionMenu.m_uncheck_item(old_selected_mode);
  537.       old_selected_mode=item_nb;
  538.       OptionMenu.m_check_item(old_selected_mode);
  539.     }
  540. }
  541.  
  542. void LanguageMenuItemClickedCall(PObject /*sender*/,int item_nb,char */*arg*/)
  543. {
  544.   switch (item_nb)
  545.     {
  546.       case 1 : if (MessageBox(GetString(VOC_LANGUAGE),
  547.                   GetString(VOC_HELLO),
  548.                   DIALOG1,MB_ICONEXCLAMATION|MB_OKCANCEL)
  549.            ==CANCEL_BUTTON)
  550.          break;
  551.  
  552.            LoadVocabulary(GERMAN);
  553.  
  554.            if (MessageBox(GetString(VOC_LANGUAGE),
  555.                   GetString(VOC_HELLO),
  556.                   DIALOG1,MB_ICONEXCLAMATION|MB_OKCANCEL)
  557.            ==CANCEL_BUTTON)
  558.          break;
  559.  
  560.            LoadVocabulary(FRENCH);
  561.  
  562.            if (MessageBox(GetString(VOC_LANGUAGE),
  563.                   GetString(VOC_HELLO),
  564.                   DIALOG1,MB_ICONEXCLAMATION|MB_OKCANCEL)
  565.            ==CANCEL_BUTTON)
  566.          break;
  567.     }
  568.  
  569.   LoadVocabulary(ENGLISH);
  570. }
  571.  
  572. void HelpMenuItemClickedCall(PObject /*sender*/,int /*item_nb*/,char */*arg*/)
  573. {
  574.   Help1Window.m_close();
  575.   Help1Window.m_open();
  576.   Help2Window.m_close();
  577.   Help2Window.m_open();
  578. }
  579.  
  580. void GaugeStartButtonPressedCall(PObject /*sender*/, char */*arg*/)
  581. {
  582.  
  583.   long value=Gauge.m_get_value();
  584.   int inc=(value==0)?1:-1;
  585.  
  586.   value+=inc;
  587.  
  588.   while ((value>=0) && (value<=100))
  589.     {
  590.       Gauge.m_set_value(value);
  591.       JPRefresh();
  592.       delay(10);
  593.       value+=inc;
  594.     }
  595. }
  596.  
  597. void QuitCall(PObject /*sender*/,char */*arg*/)
  598. {
  599.   JPStop();
  600. }
  601.  
  602. int main(int argc, char* argv[])
  603. {
  604.   if (argc>1)
  605.     if (!strcmp(argv[1],"/?"))
  606.       {
  607.     cout << "This is a demo of what you can do with JPTUI " << VERSION << "." << SUB_VERSION << "\n" \
  608.         "(Jeepy Text User Interface).\n\n"   \
  609.         "Simply type JPDEMO to run it.\n\n";
  610.     exit(EXIT_SUCCESS);
  611.       }
  612.  
  613.   JPInit();
  614.  
  615.   MainWindow.m_set_close_button_pressed_callback(QuitCall,"");
  616.   QuitButton.m_set_pressed_callback(QuitCall,"");
  617.  
  618.   DialogBoxesMenu.m_set_item_clicked_callback(DialogMenuItemClickedCall,"");
  619.   OptionMenu.m_set_item_clicked_callback(OptionMenuItemClickedCall,"");
  620.   LanguageMenu.m_set_item_clicked_callback(LanguageMenuItemClickedCall,"");
  621.   HelpMenu.m_set_item_clicked_callback(HelpMenuItemClickedCall,"");
  622.  
  623.   GaugeStartButton.m_set_pressed_callback(GaugeStartButtonPressedCall,"");
  624.  
  625.   TextZone.m_insert_text("CTRL-Y to delete a line\n" \
  626.             "CTRL-INS,SHIFT_DEL & SHIFT_INSERT to copy, cut and paste\n\n"\
  627.             "Type whatever you want and as much as you want...");
  628.  
  629.   MainWindow.m_open();
  630.  
  631.   JPRun();
  632.  
  633.   exit(EXIT_SUCCESS);
  634.   return(0);
  635.  
  636. }
  637.